package ks

// AccessTokenResponse 获取access_token
type AccessTokenResponse struct {
	Result      int    `json:"result"`
	AccessToken string `json:"access_token"`
	ExpiresIn   int    `json:"expires_in"`
	TokenType   string `json:"token_type"`
}

// BindRoomReq 绑定直播间
type BindRoomReq struct {
	RoomCode    string `json:"roomCode"`
	Timestamp   int64  `json:"timestamp"`
	CallBackUrl string `json:"callBackUrl"`
	Sign        string `json:"sign"`
	RoundId     string `json:"roundId"`
}

// BindRoomRes 绑定直播间返回
type BindRoomRes struct {
	Result   int    `json:"result"`
	ErrorMsg string `json:"errorMsg"`
	UserInfo struct {
		AuthorOpenId string `json:"authorOpenId"`
		UserName     string `json:"userName"`
		HeadUrl      string `json:"headUrl"`
	} `json:"userInfo"`
}

// UnBindRoomRes 解绑直播间
type UnBindRoomRes struct {
	Result   int    `json:"result"`
	ErrorMsg string `json:"errorMsg"`
}

// QueryStatusReq 查询直播间状态
type QueryStatusReq struct {
	RoomCode  string `json:"roomCode"`
	Timestamp int64  `json:"timestamp"`
	Sign      string `json:"sign"`
}

// QueryStatusRes 查询直播间状态返回
type QueryStatusRes struct {
	Result     int    `json:"result"`
	ErrorMsg   string `json:"errorMsg"`
	TaskStatus int    `json:"taskStatus"`
}

// GiftTopReq 礼物置顶
type GiftTopReq struct {
	RoomCode       string           `json:"roomCode"`
	Timestamp      int64            `json:"timestamp"`
	GiftList       string           `json:"giftList"`
	Sign           string           `json:"sign"`
	GiftExtendInfo []GiftExtendInfo `json:"giftExtendInfo"`
}

// GiftExtendInfo 礼物置顶提示效果
type GiftExtendInfo struct {
	Id         int      `json:"id"`         // 礼物id
	EffectDesc string   `json:"effectDesc"` // effectDesc为礼物面板左上角说明
	BatchBar   struct { // batchBar数据结构为新增信息，用于新版本快捷礼物面板拓展信息展示，支持批量送礼。
		SubTitle   string     `json:"subTitle"` //用于表示该礼物效果类型，选填字段，最多4个字
		BatchInfos []struct { // 批量效果信息
			Count            int    `json:"count"`            // 批量数量，最大10000
			Action           string `json:"action"`           // 送礼后效果动作描述，最长3个字
			ObjectBeingActed string `json:"objectBeingActed"` // 最长8个字，送礼后效果描述。三个字段组合起来表示：送一个礼物召唤魔法师x1，UI样式见上面的示意图
		} `json:"batchInfos"`
	} `json:"batchBar"`
}

// GiftTopRes 礼物置顶返回
type GiftTopRes struct {
	Result   int    `json:"result"`
	ErrorMsg string `json:"errorMsg"`
}

// CommentTopReq 评论置顶
type CommentTopReq struct {
	RoomCode  string            `json:"roomCode"`
	Timestamp int64             `json:"timestamp"`
	Sign      string            `json:"sign"`
	RoundId   string            `json:"roundId"`
	Type      string            `json:"type"`
	Data      CommentTopReqData `json:"data"`
}

// CommentTopRes 评论置顶返回
type CommentTopRes struct {
	Result   int    `json:"result"`
	ErrorMsg string `json:"errorMsg"`
}

// CommentTopReqData 评论置顶请求数据
type CommentTopReqData struct {
	CloseQuickInfoBySendGift bool `json:"closeQuickInfoBySendGift"`
	QuickInfos               []struct {
		ButtonColor string `json:"buttonColor"`
		ButtonText  string `json:"buttonText"`
		CommentText string `json:"commentText"`
		ExtraText   string `json:"extraText"`
	} `json:"quickInfos"`
}

// HandlerMsgRes 要返回的消息
type HandlerMsgRes struct {
	Result   int    `json:"result"`
	ErrorMsg string `json:"errorMsg"`
}

// GiftSendMsg 用户送礼
type GiftSendMsg struct {
	Data struct {
		UniqueMessageId string `json:"unique_message_id"`
		AuthorOpenId    string `json:"author_open_id"`
		RoomCode        string `json:"room_code"`
		PushType        string `json:"push_type"`
		Payload         []struct {
			UniqueNo       string `json:"uniqueNo"`
			GiftId         string `json:"giftId"`
			GiftName       string `json:"giftName"`
			GiftCount      int    `json:"giftCount"`
			GiftUnitPrice  int    `json:"giftUnitPrice"`
			GiftTotalPrice int    `json:"giftTotalPrice"`
			UserInfo       struct {
				UserId   string `json:"userId"`
				UserName string `json:"userName"`
				HeadUrl  string `json:"headUrl"`
			} `json:"userInfo"`
		} `json:"payload"`
	} `json:"data"`
	MessageId string `json:"message_id"`
	Event     string `json:"event"`
	AppId     string `json:"app_id"`
	Timestamp int64  `json:"timestamp"`
}

// CommentSendMsg 用户评论
type CommentSendMsg struct {
	Data struct {
		UniqueMessageId string `json:"unique_message_id"`
		AuthorOpenId    string `json:"author_open_id"`
		RoomCode        string `json:"room_code"`
		PushType        string `json:"push_type"`
		Payload         []struct {
			Content  string `json:"content"`
			UserInfo struct {
				UserId   string `json:"userId"`
				UserName string `json:"userName"`
				HeadUrl  string `json:"headUrl"`
			} `json:"userInfo"`
		} `json:"payload"`
	} `json:"data"`
	MessageId string `json:"message_id"`
	Event     string `json:"event"`
	AppId     string `json:"app_id"`
	Timestamp int64  `json:"timestamp"`
}

// LikeSendMsg 用户点赞
type LikeSendMsg struct {
	Data struct {
		UniqueMessageId string `json:"unique_message_id"`
		AuthorOpenId    string `json:"author_open_id"`
		RoomCode        string `json:"room_code"`
		PushType        string `json:"push_type"`
		Payload         []struct {
			Count    int `json:"count"`
			UserInfo struct {
				UserId   string `json:"userId"`
				UserName string `json:"userName"`
				HeadUrl  string `json:"headUrl"`
			} `json:"userInfo"`
		} `json:"payload"`
	} `json:"data"`
	MessageId string `json:"message_id"`
	Event     string `json:"event"`
	AppId     string `json:"app_id"`
	Timestamp int64  `json:"timestamp"`
}

// FollowSendMsg 用户关注
type FollowSendMsg struct {
	Data struct {
		UniqueMessageId string `json:"unique_message_id"`
		AuthorOpenId    string `json:"author_open_id"`
		RoomCode        string `json:"room_code"`
		PushType        string `json:"push_type"`
		Payload         []struct {
			UserInfo struct {
				UserId   string `json:"userId"`
				UserName string `json:"userName"`
				HeadUrl  string `json:"headUrl"`
			} `json:"userInfo"`
		} `json:"payload"`
	} `json:"data"`
	MessageId string `json:"message_id"`
	Event     string `json:"event"`
	AppId     string `json:"app_id"`
	Timestamp int64  `json:"timestamp"`
}
